package com.shujia

object Demo24Match {
  def main(args: Array[String]): Unit = {


    /**
      * 模式匹配,  可以匹配,基本数据类型,字符串,对象,还可以匹配类型
      *
      */


    val i = 100

    //  =>  左边使用匹配项,   右边是陪陪成功之后处理方式  可以看作是函数体
    i match {
      case 1 => println("i=1")
      case 2 => println("i=2")
      case 10 => println("i=10")
      case _ => println("都没匹配上")
    }


    //match  可以有返回值
    val r: String = i % 2 match {
      case 0 => "偶数"
      case 1 => "奇数"
    }

    println(r)


    val map: Map[String, String] = Map("001" -> "张三", "002" -> "李四")


    val option: Option[String] = map.get("002")


    //对返回的数据进行匹配,分别处理
    val r1: String = option match {
      case Some(x) => x
      case None => "默认值"
    }

    println(r1)

    println(map.getOrElse("002", "默认值"))


    /**
      * 对类型匹配
      *
      */
    val str: Any = 100

    str match {
      case s: String => println("这是一个字符串:" + s)
      case i: Int => println("这里一个数字:" + i)
      case _ => println("没匹配上")
    }


    /**
      * 匹配对象
      *
      */

    case class User(name: String, age: Int)


    val user: User = User("张三", 23)


    user match {
      case User("张三", 23) => println(user)
      case User("李四", 22) => println(user)
      case User("王五", 21) => println(user)
    }


  }


}
